package org.example.domain.iim;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;

/**
 * 元素表
 * @TableName elements
 */
@TableName(value ="elements")
@Data
public class Elements implements Serializable {
    /**
     * 元素id，自增长主键
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 关联项目id，非空，外键关联 projects 表的 project_id
     */
    private Integer projectId;

    /**
     * 所属接口(接口id)，非空，外键关联 interfaces 表的 id
     */
    private Integer interfaceId;

    /**
     * 数据名称，非空
     */
    private String name;

    /**
     * 数据标识，非空
     */
    private String identifier;

    /**
     * 单位（量纲）
     */
    private String unit;

    /**
     * 物理范围
     */
    private String physicalRange;

    /**
     * 值域范围
     */
    private String valueRange;

    /**
     * 异常处理，较长文本内容用 TEXT 类型
     */
    private String exceptionHandling;

    /**
     * 加密处理，如 "是" 或 "否" 等简单表示
     */
    private String encryptionHandling;

    /**
     * 经度要求
     */
    private String precisionRequirement;

    /**
     * 数据类型(类型id)，非空，外键关联 data_types 表的 id
     */
    private Integer dataTypeId;

    /**
     * 数据规格(规格id)，非空，外键关联 data_specifications 表的 id
     */
    private Integer dataSpecificationId;

    /**
     * 对应需求(需求id)，非空，外键关联 requirements 表的 id
     */
    private Integer correspondingRequirementId;

    /**
     * I/O类型(IO类型id)，非空，外键关联 io_types 表的 id
     */
    private Integer ioTypeId;

    /**
     * 附加信息，较长文本内容用 TEXT 类型
     */
    private String additionalInfo;

    /**
     * 创建时间，默认取当前时间
     */
    private Date createTime;

    /**
     * 修改时间，更新时自动更新为当前时间
     */
    private Date updateTime;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}